package com.study.spark.ml.basic.vector

import breeze.linalg._
import breeze.stats.mean
/**
 * 向量使用示例
 *
 * @author stephen
 * @date 2019-08-21 10:03
 */
object VectorDemo {

  def main(args: Array[String]): Unit = {
    // 密集向量
    val dv = DenseVector(1, 2, 3, -4, 5, 6)
    // 更新索引为3的元素值
    dv.update(3, 4)
    println(dv)
    // 相加
    println(dv+dv)
    // 相乘
    println(dv * dv.t)
    println(dv dot dv)
    // 平均值
    println(mean(DenseVector(0.0,1.0,2.0)))
    // 模
    println(norm(dv,1))
    // 正则化向量，使其范数为 1.0
    //print(normalize(dv))
    // 最大最小元素的索引
    println(argmin(dv))
    println(argmax(dv))
    // 最大最小元素
    println(min(dv))
    println(max(dv))
    // 比较向量大小，结果为符合比较条件的各对应元素的索引
    println((dv :== dv))
    println((dv <:= dv))
    println((dv >:= dv))
    println((dv <:< dv))
    println((dv >:> dv))

    // 稀疏向量
    val sv:SparseVector[Int] = SparseVector(5)()
    sv(0) = 1
    sv(2) = 1
    sv(4) = 1
    println(sv)


  }
}
